﻿using System.Collections.Generic;
using CID.Domain.Infrastructure;
using CID.Domain.Operations;
using CID.Domain.Users;

namespace CID.Domain.Development
{
    public interface IComponent : IDescribedEntity
    {
        bool Enabled { get; set; }
        IActivationDeactivationDefinition ActivationDeactivationDefinition { get; }
        IServerRole RequiredServerRole { get; set; }
        IUser Responsible { get; set; }
        IEnumerable<IVersion> Versions { get; }
        IEnumerable<IVersion> Dependants { get; }

        void AddDependant(IVersion version);
        IVersion CreateVersion(string name, string description);
        void RemoveVersion(IVersion version);
        void RemoveDependant(IVersion version);
    }
}
